import { request } from '@/utils/request/axios';
import { ErrorMessageMode, PageRequest, PageData } from '#/request';
import { EntityRoleOutputDto, EntityRoleInputDto } from './model';

/** 管理-角色数据权限枚举 */
enum Api {
  /** 读取角色数据权限列表信息 */
  Read = '/api/admin/roleEntity/read',

  /** 新增角色数据权限信息 */
  Create = '/api/admin/roleEntity/create',
  /** 更新角色数据权限信息 */
  Update = '/api/admin/roleEntity/update',
  /** 删除角色数据权限信息 */
  Delete = '/api/admin/roleEntity/delete',
}

//#region 读取角色数据权限列表信息
/**
 * 读取角色数据权限列表信息
 * @param params 分页请求
 * @param mode 错误消息模型
 */
export function readRoleEntities(params: PageRequest, mode: ErrorMessageMode = 'message') {
  return request.post<PageData<EntityRoleOutputDto>>(
    {
      url: Api.Read,
      params: params,
    },
    {
      errorMessageMode: mode,
    },
  );
}
//#endregion

//#region 新增角色数据权限信息
/**
 * 新增角色数据权限信息
 * @param dtos 角色数据权限信息
 * @param mode 错误消息模型
 */
export function createRoleEntities(dtos: EntityRoleInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Create,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
//#endregion
//#region 更新角色数据权限信息
/**
 * 更新角色数据权限信息
 * @param dtos 角色数据权限信息
 * @param mode 错误消息模型
 */
export function updateRoleEntities(dtos: EntityRoleInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Update,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
//#endregion
//#region 删除角色数据权限信息
/**
 * 删除角色数据权限信息
 * @param ids 角色数据权限编号集合
 * @param mode 错误消息模型
 */
export function deleteRoleEntities(ids: (string | bigint)[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Delete,
      params: ids,
    },
    {
      errorMessageMode: mode,
    },
  );
}
//#endregion
